home *** CD-ROM | disk | FTP | other *** search
Wrap
BBBBUUUUTTTTTTTTOOOONNNNFFFFLLLLYYYY((((6666DDDD)))) BBBBUUUUTTTTTTTTOOOONNNNFFFFLLLLYYYY((((6666DDDD)))) NNNNAAAAMMMMEEEE buttonfly - a pretty user interface for Silicon Graphics demos SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS bbbbuuuuttttttttoooonnnnffffllllyyyy [ mmmmeeeennnnuuuuffffiiiilllleeee ] DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN _B_u_t_t_o_n_f_l_y is a user reconfigurable, hierarchical, graphical menu system. _B_u_t_t_o_n_f_l_y opens up a window and displays one or more buttons, each with its own title. Moving the mouse pointer over a button and pressing the left mouse button selects that button, and will cause it to either exe- cute UNIX commands (such as running a program) or fly forward and flip over, exposing one or more new buttons. Each of the newly exposed but- tons may also be selected to either execute UNIX commands or expose a new level of buttons, and so on. To go back to the previous set of buttons move the mouse pointer so it isn't over any of the buttons, and press the left mouse button (i.e. select the background). The buttons will flip over backwards to bring up the previous set. Selecting the background at the top level does noth- ing. Using the middle mouse button instead of the left mouse button causes the new menu to be displayed immediately, instead of flipping it in to view. Pressing the right mouse button will bring up a different pop-up menu depending on which button the mouse pointer is over. Each menu has at least a 'Do It' entry; selecting this entry has the same effect that pressing the left mouse button while it is over the background would. Pressing the space bar will toggle between a full-screen version of _b_u_t_- _t_o_n_f_l_y and the window version. The full-screen version is useful for presentations to large audiences, where visibility is important. To exit from _b_u_t_t_o_n_f_l_y, press the escape key. RRRREEEECCCCOOOONNNNFFFFIIIIGGGGUUUURRRRIIIINNNNGGGG BBBBUUUUTTTTTTTTOOOONNNNFFFFLLLLYYYY _B_u_t_t_o_n_f_l_y'_s menus were designed to be simple to change with any UNIX text editor (such as _v_i ). When it is run with no arguments, it looks for button descriptions in a file called '.menu' in the current directory. If it is given one argument, it will look in that file for button defini- tions instead. _B_u_t_t_o_n_f_l_y uses a very simple format to describe its buttons. The format has four different kinds of lines: comments, titles, actions, and com- mands. Any line beginning with a '#' character is considered a comment and is ignored. PPPPaaaaggggeeee 1111 BBBBUUUUTTTTTTTTOOOONNNNFFFFLLLLYYYY((((6666DDDD)))) BBBBUUUUTTTTTTTTOOOONNNNFFFFLLLLYYYY((((6666DDDD)))) Button titles, like comments, always start in the first column of the file, and may be anything not starting with a '#'. Titles may be a max- imum of 36 characters long; _b_u_t_t_o_n_f_l_y will automatically separate the ti- tle into a maximum of three lines of twelve characters, separating words in the title at spaces. Action lines start with a tab and end with a newline, and may be any UNIX command. Multiple actions may be specified for a button by listing them after the button one per line, each starting with a tab. Actions may not span more than one line, but may be any length. If no actions are speci- fied for a button, the button is displayed, but nothing will happen when it is selected. Commands, like actions, start with a tab character. Currently, the com- mands recognized are '.menu.', '.popup.', '.cd.', '.color.', '.backcolor.', and '.highcolor.'. Everything else is assumed to be an action and will be executed as a UNIX command in a shell (see _s_h(_1)). The special action called '.menu.' is used to specify a button that has several buttons attached to the back of it. When _b_u_t_t_o_n_f_l_y sees '.menu. filename' it will create a new set of buttons from the descriptions in 'filename'. If it cannot find 'filename' in the current directory, then nothing happens. If 'filename' is '-', then the new set of buttons is created from the standard output of the previous actions (see example below). Note that any 'cd' commands in an action list do not affect the directory in which _b_u_t_t_o_n_f_l_y looks for the filenames specified in '.menu.' commands, becuase actions are executed in a sub-shell (see the '.cd.' command below). Another special actions is '.popup.'. It is used to define a pop-up menu entry attached to a button. When _b_u_t_t_o_n_f_l_y sees '.popop. title' it adds an entry 'title' to the button's pop-up menu. The actions following a .popup. command will be executed when that menu entry is chosen. _B_u_t_- _t_o_n_f_l_y automatically provides a 'Do It' entry, which has the same effect as pressing the left mouse button. The '.cd.' action is used to change buttonfly's idea of the current work- ing directory. When the button containing the .cd. command is pressed, _b_u_t_t_o_n_f_l_y will chdir into that directory before executing that button's actions, and all buttons underneath that button will also be executed in that directory (unless they also have .cd. commands). Note that execut- ing the regular 'cd' shell command in a button does not affect _b_u_t_t_o_n_f_l_y'_s idea of the current working directory, since all button ac- tions are executed in their own shell environment. The command '.color.' followed by three numbers in the range 0.0 ... 1.0 specifies the red, green and blue components of a button's color, and '.highcolor' does the same for the color of the button as it is being selected. '.backcolor.' changes the color of the back of the button, which becomes the background color of the next set of buttons (displayed when the button flips over). Note that using color commands at the top of a file, before any buttons have been defined, causes the default PPPPaaaaggggeeee 2222 BBBBUUUUTTTTTTTTOOOONNNNFFFFLLLLYYYY((((6666DDDD)))) BBBBUUUUTTTTTTTTOOOONNNNFFFFLLLLYYYY((((6666DDDD)))) colors to be changed for all subsequent buttons. To change the back- ground color to red for the first button and all subsequent buttons you would specify: ._b_a_c_k_c_o_l_o_r. _1._0 _0._0 _0._0 in the menu description file before any buttons are defined. EEEEXXXXAAAAMMMMPPPPLLLLEEEESSSS The following are example buttonfly .menu files, with descriptions of what they do. This is a very simple button called 'First' that has the buttons defined in the file '.menu_second' on the back of it. First .menu. .menu_second Here are three buttons. The 'Parent' button is purple and will flip over and display the other two buttons when pressed (they will be displayed on a purple background, since that is the color on the back of the first button). The 'Demonstrate...' button changes directories and then runs a program when pressed, and 'Recurse' flips over and shows the first button again, this time on a blue background since the '.backcolor.' command changes the background color to blue. #Save this in a file called '.menu' Parent .color. .89 .10 .89 .backcolor. .89 .10 .89 .highcolor. 1.0 .5 1.0 .menu. child #Save the following buttons in a file called 'child' Demonstrate GL/NeWS Interface cd /usr/NeWS/demo glnews Recurse .backcolor. 0.0 0.0 1.0 .menu. .menu Here is a very complicated button, which builds a button file based on the files it finds in a directory full of files. When pressed, it builds the file and then uses .menu. to flip over, exposing entries for all the files it found. Note that this allows you to delete or add image files, and the buttons will always be accurate. It also has a pop-up menu on it giving help; the first .popup command specifies the title of the menu us- ing the %t feature of Silicon Graphics menus. PPPPaaaaggggeeee 3333 BBBBUUUUTTTTTTTTOOOONNNNFFFFLLLLYYYY((((6666DDDD)))) BBBBUUUUTTTTTTTTOOOONNNNFFFFLLLLYYYY((((6666DDDD)))) Show An Image cd /usr/demos/data/images # # The following two lines must all be on the # same line in the .menu file # /bin/ls *.rgb | awk 'BEGIN{FS="."}{print "Show " $1 "\n\tipaste /usr/demos/data/images/" $0 "\n"}' .menu. - .popup. ShowImage Menu %t .popup. Ipaste Man Page wsh -c man ipaste BBBBUUUUGGGGSSSS _B_u_t_t_o_n_f_l_y will not work if the first character of a file is a TAB fol- lowed by anything other than .color., .backcolor., or .highcolor. It is safest to eliminate any blank lines from the files you create. _B_u_t_t_o_n_f_l_y may crash if given an arbitrary file as input. The maximum number of buttons on any level of the hierarchy is 32. If a program fails to run, nothing happens-- no error messages or warn- ings are given. This can be considered either a feature or a bug. Specifying %F, %f, %x, or %m as part of a .popup. title will give bad results, and may crash the program. Using %t to specify a title works, but any actions specified for that entry will never be executed (since it is impossible to select a title entry). AAAADDDDDDDDEEEENNNNDDDDAAAA AAAAUUUUDDDDIIIIOOOO With the release of IRIX 6.3, audio was added to buttonfly. When the buttons fly forward or back, the system will play corresponding audio files located in ////uuuussssrrrr////ddddeeeemmmmoooossss////DDDDeeeemmmmoooo____IIIInnnntttteeeerrrrffffaaaacccceeeessss////BBBBuuuuttttttttoooonnnnffffllllyyyy.... If the middle mouse option is used to move through the buttons without flight, the audio will not play. The audio option can be toggled off by running bbbbuuuuttttttttoooonnnnffffllllyyyy ----aaaa IIIINNNNTTTTEEEEGGGGRRRRAAAATTTTIIIIOOOONNNN WWWWIIIITTTTHHHH WWWWEEEEBBBB----BBBBAAAASSSSEEEEDDDD IIIINNNNTTTTEEEERRRRFFFFAAAACCCCEEEE With the release of IRIX 6.3, we have added a web-based interface to the demos. Since this interface already sorts demos based on categories, we were able to use a perl script ( mmmmkkkkmmmmeeeennnnuuuu ) to access the sorted lists of demos and create buttonfly heirarchies dynamically. When bbbbuuuuttttttttoooonnnnffffllllyyyy is started now, by default, it will have the categories from the web UI: FFFFeeeeaaaattttuuuurrrreeeessss,,,, IIIInnnndddduuuussssttttrrrriiiieeeessss,,,, and HHHHaaaarrrrddddwwwwaaaarrrreeee.... The sub-categories which fall beneath these are viewable from the Search page of the web-based interface. This is accessible from the sys- tem toolchest FFFFiiiinnnnddddDemos menu option, or by typing hhhhttttttttpppp::::////////llllooooccccaaaallllhhhhoooosssstttt////DDDDeeeemmmmoooossss from your local web browser. PPPPaaaaggggeeee 4444 BBBBUUUUTTTTTTTTOOOONNNNFFFFLLLLYYYY((((6666DDDD)))) BBBBUUUUTTTTTTTTOOOONNNNFFFFLLLLYYYY((((6666DDDD)))) Although these demos do not require the traditional structure, this structure is still supported, particularly since these changes were made via scripts, not in the buttonfly source code. To use buttonfly for accessing demos from the web-based interface (locat- ed in ////uuuussssrrrr////ddddeeeemmmmoooossss////GGGGeeeennnneeeerrrraaaallll____DDDDeeeemmmmoooossss ) and demos with the traditional heirar- chy, just install or link the traditional heirarchy into ////uuuussssrrrr////ddddeeeemmmmoooossss////BBBBuuuuttttttttoooonnnnffffllllyyyy.... The mmmmkkkkmmmmeeeennnnuuuu script automatically adds a button based on the menu file located in the new directory beneath ////uuuussssrrrr////ddddeeeemmmmoooossss////BBBBuuuuttttttttoooonnnnffffllllyyyy.... AAAAUUUUTTTTHHHHOOOORRRR Thant Tessman and Gavin Bell Audio support: Diana Starr Perl scripts: Da- vid (Sprout) Anderson FFFFIIIILLLLEEEESSSS ////uuuussssrrrr////ddddeeeemmmmoooossss////DDDDeeeemmmmoooo____IIIInnnntttteeeerrrrffffaaaacccceeeessss////BBBBuuuuttttttttoooonnnnffffllllyyyy//// .menu - custom menu file which supports the display of demos from the web-based interface and any demos in Times-Italic.bw - font file buttonfly - executable buttonfly.sh - script to process input for buttonfly buttonflyAudio - script to process input for buttonfly, includes audio demofind - script that finds demos in.aiff - audio for buttons flying in manwsh - script: launches shell with man page mkmenu - script: dynamically creates buttonfly menu files for demos installed in web interface out.aiff - audio for buttons flying out sea.rgb - texture redirect - script: redirects output of demo ////uuuussssrrrr////ddddeeeemmmmoooossss////BBBBuuuuttttttttoooonnnnffffllllyyyy buttonfly - for convenience, this is a link to the above buttonfly.sh script buttonflyAudio - for conveniece, this is a link to the above buttonflyAudio script Additional Demo Trees - Traditionally structured buttonfly heirarchies can be installed in this directory HHHHAAAARRRRDDDDWWWWAAAARRRREEEE RRRREEEEQQQQUUUUIIIIRRRREEEEMMMMEEEENNNNTTTTSSSS Must have at least 24 bitplanes. PPPPaaaaggggeeee 5555